//同步版本
var data= [{
    id: 1,
    text: '...',
    done: true
},{
    id: 2,
    text: '...',
    done: false
}];

const storeConfig1 = {todos:{
    data: data
}}
// {
//     todos:{
//         data: data 
//     }
// }
const store1 = initStore(storeConfig1)

var id = 2;
new Vue({
    el: '#app',
    store:store1,
    computed: {
        todos() {
            return this.$store.getters.todos
        }
    },
    methods: {
        onClick() {
            data.push({
                id:++id,
                text:'...',
                done:!!(id%2)
            })
            this.$store.commit('todos',data)
        }
    }
})

//异步版本
var data2= [{
    id: 1,
    text: '...',
    done: true
},
{
    id: 2,
    text: '...',
    done: false
}
];
const storeConfig = {todos:{
    async(arg) {
        console.log(arg);
        
        var resolve;
        var promise = new Promise(res => resolve = res);
        setTimeout(() => {
            resolve(data2)
        }, 2000);
        return promise;
    },
    data:{},
    gettersIsFn:true
}}
const store = initStore(storeConfig)

var id2 = 2;
new Vue({
    el: '#app2',
    data(){
        return {
            id2:id2,
            isShow:true
        }
    },
    store,
    computed: {
        todos() {
            return this.$store.getters.todos('1')
        }
    },
    methods: {
        onClick() {
            data2.push({
                id:++id2,
                text:'...',
                done:!!(id2%2)
            })
            this.$store.commit('todos')
        },
        onShow(){
            this.isShow=!this.isShow;
        }
    }

})

// function initStore([{
//     name:'xxx',
//     data:[],
//     getter:xxx,
//     setter:xxx
// }){

// }